# 导入pandas库
import pandas as pd
# 导入seaborn库
import seaborn as sns
# 导入matplotlib.pyplot库
import matplotlib.pyplot as plt
# 从指定URL读取CSV文件到DataFrame
url = "https://raw.githubusercontent.com/MicrosoftDocs/mslearn-introduction-to-machine-learning/main/Data/ml-basics/penguins.csv"
df = pd.read_csv(url)
# 打印数据集的前5行
print(df.head())
# 使用seaborn绘制物种分布柱状图
sns.countplot(x='Species', data=df)
# 使用seaborn绘制每个物种的FlipperLength分布箱线图
sns.boxplot(x='Species', y='FlipperLength', data=df)
# 使用seaborn绘制每个物种的CulmenLength分布箱线图
sns.boxplot(x='Species', y='CulmenLength', data=df)
# 使用seaborn绘制每个物种的CulmenDepth分布箱线图
sns.boxplot(x='Species', y='CulmenDepth', data=df)
# 显示图形
plt.show()
# 显示包含缺失值的行
print(df.isnull().sum())
# 删除包含缺失值的行
df.dropna(inplace=True)
# 准备训练数据：
# 1. 分割特征和标签
# 2. 分割训练集和测试集
# 特征是CulmenLength, CulmenDepth, FlipperLength
# 标签是Species
# 以30%的数据用于测试的方式分割数据
from sklearn.model_selection import train_test_split
# 分割特征和标签
X = df[['CulmenLength', 'CulmenDepth', 'FlipperLength']]
y = df['Species']
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 训练逻辑回归模型
# 1. 创建多类别逻辑回归模型
# 2. 训练模型
from sklearn.linear_model import LogisticRegression
# 创建逻辑回归模型
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')
# 训练模型
model.fit(X_train, y_train)